package uttime

import "time"

const (
	DtFormatDate  = "2006-01-02"
	DtFormatTime  = "2006-01-02 15:04:05"
	DtFormatMonth = "2006-01"
)

// TimeToDateString
// @Description: 时间转日期字符串
// @param dt
// @return string
func TimeToDateString(dt time.Time) string {
	return dt.Format(DtFormatDate)
}

// TimeToTimeString
// @Description: 时间转日期字符串
// @param dt
// @return string
func TimeToTimeString(dt time.Time) string {
	return dt.Format(DtFormatTime)
}

// TimeToMonthString
// @Description: 时间转月份字符串
// @param dt
// @return string
func TimeToMonthString(dt time.Time) string {
	return dt.Format(DtFormatMonth)
}

// TimeToMonth
// @Description: 时间转月份字符串
// @param dt
// @return string
func TimeToMonth(dt time.Time) int {
	return dt.Year()*100 + int(dt.Month())
}

// DateStringToTimeE
// @Description: 日期字符串转时间
// @param dt
// @return time.Time
// @return error
func DateStringToTimeE(dt string) (time.Time, error) {
	return time.Parse(DtFormatDate, dt)
}

// DateStringToTime
// @Description: 时间字符串转时间
// @param dt
// @return time.Time
// @return error
func DateStringToTime(dt string) time.Time {
	if t, err := time.Parse(DtFormatDate, dt); err == nil {
		return t
	} else {
		return time.Now()
	}
}

// TimeStringToTimeE
// @Description: 时间字符串转时间
// @param dt
// @return time.Time
// @return error
func TimeStringToTimeE(dt string) (time.Time, error) {
	return time.Parse(DtFormatTime, dt)
}

// TimeStringToTime
// @Description: 时间字符串转时间
// @param dt
// @return time.Time
// @return error
func TimeStringToTime(dt string) time.Time {
	if t, err := time.Parse(DtFormatTime, dt); err == nil {
		return t
	} else {
		return time.Now()
	}
}

// SameMonth
// @Description: 判断同一月
// @param dt1
// @param dt2
// @return bool
func SameMonth(dt1, dt2 time.Time) bool {
	return dt1.Year() == dt2.Year() && dt1.Month() == dt2.Month()
}

// SameDay
// @Description: 判断同一天
// @param dt1
// @param dt2
// @return bool
func SameDay(dt1, dt2 time.Time) bool {
	return dt1.Year() == dt2.Year() && dt1.Month() == dt2.Month() && dt1.Day() == dt2.Day()
}

// SameHour
// @Description: 判断同一小时
// @param dt1
// @param dt2
// @return bool
func SameHour(dt1, dt2 time.Time) bool {
	return dt1.Year() == dt2.Year() && dt1.Month() == dt2.Month() && dt1.Day() == dt2.Day() && dt1.Hour() == dt2.Hour()
}
